/*********************************************************************
 clase Componente
 * un componente tiene asociado un nodo y un punto de monitoreo
 ********************************************************************/
function hidcomponente(ide, tipo, tipouni, latitud, longitud, nombre, tipoptomon)
{
    this.ide = ide;
    this.tipo = tipo;
    this.latitud = latitud;
    this.longitud = longitud;
    this.tipouni = tipouni;
    this.nombre = nombre;
    this.tipoptomon = tipoptomon;

    this.hidcomp_latmayor = hidcomp_latmayor;
    this.hidcomp_latmenor = hidcomp_latmenor;
    this.hidcomp_lngmayor = hidcomp_lngmayor;
    this.hidcomp_lngmenor = hidcomp_lngmenor;

    this.hidcomp_latarray = hidcomp_latarray;
    this.hidcomp_lngarray = hidcomp_lngarray;
    this.hidcomp_tiparray = hidcomp_tiparray;
    this.hidcomp_idearray = hidcomp_idearray;
    this.hidcomp_nombarray = hidcomp_nombarray;
    this.hidcomp_tipoptomonarray = hidcomp_tipoptomonarray;
    this.hidcomp_find = hidcomp_find;
    this.hidcomp_findById = hidcomp_findById;
    this.hidcomp_findByLatLng = hidcomp_findByLatLng;
    this.hidcomp_numElem = hidcomp_numElem;
    this.hidcomp_nuevoIde = hidcomp_nuevoIde;
}

//metodo para obtener la latitud maxima de los componentes
function hidcomp_latmayor(compArray)
{
    var mayor = -9999999999999999;
    for (var i = 0; i < compArray.length; i++)
    {
        if(compArray[i].latitud > mayor)
        {
            mayor = compArray[i].latitud;
        }
    }

    return mayor;
}

//metodo para obtener la latitud minima de los componentes
function hidcomp_latmenor(compArray)
{
    var menor = 9999999999999999;
    for (var i = 0; i < compArray.length; i++)
    {
        if(compArray[i].latitud < menor)
        {
            menor = compArray[i].latitud;
        }
    }

    return menor;
}

//metodo para obtener la longitud maxima de los componentes
function hidcomp_lngmayor(compArray)
{
    var mayor = -9999999999999999;
    for (var i = 0; i < compArray.length; i++)
    {
        if(compArray[i].longitud > mayor)
        {
            mayor = compArray[i].longitud;
        }
    }

    return mayor;
}

//metodo para obtener la longitud minima de los componentes
function hidcomp_lngmenor(compArray)
{
    var menor = 9999999999999999;
    for (var i = 0; i < compArray.length; i++)
    {
        if(compArray[i].longitud < menor)
        {
            menor = compArray[i].longitud;
        }
    }

    return menor;
}

//metodo para obtener un arreglo que contenga todas las latitudes
function hidcomp_latarray(compArray)
{
    var latarray = [];
    for(var i = 0; i < compArray.length; i++)
    {
        latarray.push(compArray[i].latitud);
    }
    return latarray;
}

//metodo para obtener un arreglo que contenga todas las longitudes
function hidcomp_lngarray(compArray)
{
    var lngarray = [];
    for(var i = 0; i < compArray.length; i++)
    {
        lngarray.push(compArray[i].longitud);
    }
    return lngarray;
}

//metodo para obtener un arreglo que contenga todos los nombres de los componentes
function hidcomp_nombarray(compArray)
{
    var nombarray = [];
    for(var i = 0; i < compArray.length; i++)
    {
        nombarray.push(compArray[i].nombre);
    }
    return nombarray;
}

//metodo para obtener un arreglo que contenga todos los tipos de punto de monitoreo de los componentes
function hidcomp_tipoptomonarray(compArray)
{
    var nombarray = [];
    for(var i = 0; i < compArray.length; i++)
    {
        nombarray.push(compArray[i].tipoptomon);
    }
    return nombarray;
}

//metodo para obtener un arreglo que contenga todos los tipos de los componentes
function hidcomp_tiparray(compArray)
{
    var tipoarray = [];
    for(var i = 0; i < compArray.length; i++)
    {
        tipoarray.push(compArray[i].tipo);
    }
    return tipoarray;
}

//metodo para obtener un arreglo que contenga todos los ids de los componentes
function hidcomp_idearray(compArray)
{
    var idearray = [];
    for(var i = 0; i < compArray.length; i++)
    {
        idearray.push(compArray[i].ide);
    }
    return idearray;
}

//metodo para obtener el ide de un componente correspondiente a un marcador
function hidcomp_find(compArray, marker)
{
    for(var i = 0; i < compArray.length; i++)
    {
        var myLatlng = new google.maps.LatLng(compArray[i].latitud,compArray[i].longitud);
        if(myLatlng.equals(marker.getPosition()) == true)
        {
            if(compArray[i].ide != 0)
            {
                return compArray[i].ide;
            }
        }
    }

    return -1;
}

//metodo para buscar un componente por su ide, retorna la posicion dentro del arreglo de componentes
function hidcomp_findById(compArray, ide)
{
    for(var i = 0; i < compArray.length; i++)
    {
        if(parseInt(compArray[i].ide) == ide)
        {
            return i;
        }
    }
    return -1;
}

//metodo para buscar un componente por su latitud y longitud, retorna la posicion dentro del arreglo de componentes
function hidcomp_findByLatLng(compArray, marker)
{
    for(var i = 0; i < compArray.length; i++)
    {
        var myLatlng = new google.maps.LatLng(compArray[i].latitud,compArray[i].longitud);
        if(myLatlng.equals(marker.getPosition()) == true)
        {
            return i;
        }
    }

    return -1;
}

//metodo para obtener el numero de elementos de un arreglo
function hidcomp_numElem(compArray)
{
    return compArray.length;
}

//metodo para obtener un nuevo ide para un nuevo componente
//se verifican un arreglo de componentes y un arreglo de lineas
function hidcomp_nuevoIde(compArray, compArray2)
{
    var contador = 0;
    if(compArray.length > 0 || compArray2.length > 0)
    {
        for(var i = 0; i < compArray.length; i++)
        {
            if(compArray[i].ide > contador)
            {
                contador = compArray[i].ide;
            }
        }

        for(var j = 0; j < compArray2.length; j++)
        {
            if(compArray2[j][5] > contador)
            {
                contador = compArray2[j][5];
            }
        }

        return parseInt(contador) + 1;
    }
    return parseInt(contador);
}